go work 工作空间正确的使用方式

您所在的位置:网站首页 go to work by metro翻译 go work 工作空间正确的使用方式

go work 工作空间正确的使用方式

2023-08-16 07:36| 来源: 网络整理| 查看: 265

1e30e924b899a901f423367310950a7b0208f565.png 我报名参加金石计划1期挑战——瓜分10万奖池,这是我的第3篇文章,点击查看活动详情

前言

今天要优化自己的一个模块,突然想到go1.18有个工作空间,只知道这东西比replace好用,具体怎么使用却不太清楚。

于是一遍百度+掘金搜索,越看文章越困惑,直到亲自测试,彻底弄清go work才发现好多文章根本就是复制粘贴,甚至有些文章里出现了“同个目录”的错误言论。

工作空间初步使用

目前go都是通过mod进行包管理,包主要分两类,一类是公网上的,直接引入用go mod管理即可。

一类是本地包,比如你自己写的包或者下载到本地的包,对于这类包,在go 1.18前,都是通过给go.mod中添加replace来修改引用包的实际路径。

这种包引用对于git提交就非常麻烦,每次提交前需要把replace去掉才行。

于是go work被发明了出来。

go work 即工作空间,就是一个目录(文件夹),里边有一个go.work 文件。

H:/work/ go.work - demo/ main.go go.mod go.sum

go.work中的内容如下

go 1.19 use( H:/information/goserver ./demo )

注意两个目录路径,工作空间为 H:/work/ 但是模块引用的包路径是 H:/information/goserver,他们可以不在同一个目录下,use后可以跟相对或者绝对路径。

demo一旦放在工作空间下,那么,demo下的go.mod寻找就会通过go.work来实现,而不能像之前在demo下运行go run或者go build 就能自动寻找到go.mod, 所以必须在work目录下运行go use demo,把"./demo" 添加到go.work中,这样你才能在demo项目里引用demo模块中的包。

开始就是不明白这个道理,搞了工作空间,但是没有添加到go.work中,怎么运行怎么都提示本项下的包找不到。

工作空间这一层一般都不会进行git提交,提交的都是工作空间下的各个项目。

命令解析

go.work是整个工作空间的基本配置文件,go.work文件主要用于本地开发使用,不进行git提交。

工作空间初始化

go work init

该命令运行后会生成go.work文件。

go.work推荐在$GOPATH路径上,也可以在项目目录任何一级中,比如有个项目在 "/a/b/c/project",go.work可以在/a 或者/a/b 或者/a/b/c 中,在/a/b/c任何一级目录。注意在上一级中已经存在go.work则,下级目录中无法创建新的go.work。

查询go.work所在位置可以用命令

go env GOWORK

添加项目到工作空间

go work use [-r] [项目1 项目2 ...]

-r 表示递归查找。

项目指包含go.mod的项目

删除用

go work -dropedit=项目

格式化go.work

go work edit -fmt go.work

use replace go 1.18 use ( ./hello ./example ) replace ( github.com/link1st/example => ./example )

use 和 replace都是指定本地项目目录

replace 则表示项目中的 github.com/link1st/example 在本地 ./example1中找



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3